/**
*
*/
package de.yaams.maker;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.UIManager;
import org.apache.commons.lang.SystemUtils;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggingEvent;
import de.yaams.maker.helper.Log;
import de.yaams.maker.helper.Setting;
import de.yaams.maker.helper.gui.AE;
import de.yaams.maker.helper.gui.YEx;
import de.yaams.maker.helper.gui.YMessagesDialog;
import de.yaams.maker.helper.gui.icons.IconCache;
import de.yaams.maker.helper.gui.start.YWindowStart;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.helper.language.T;
import de.yaams.maker.helper.wizard.WizardErrorPage;
import de.yaams.maker.helper.wizard.WizardManagement;
import de.yaams.maker.programm.YAamsCore;
import de.yaams.maker.programm.YaFrame;
import de.yaams.maker.programm.favorit.FavoritManagement;
import de.yaams.maker.programm.plugins.PluginPlugin;
import de.yaams.maker.programm.project.ProjectManagement;
import de.yaams.maker.programm.project.ProjectTabEvent;
import de.yaams.maker.programm.tabs.BasicTabEvent;
/**
* @author Nebli
*
*/
public class Start {
public static YMessagesDialog mess;
/**
* @param args
*/
public static void main(String[] args) {
// Set System L&F
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (final Throwable t) {
Log.ger.info("Can not set Look and Feel", t);
}
try {
new Start();
} catch (final Throwable t) {
YEx.lastExit("Can not run program", t);
}
}
/**
* Start it
*/
public Start() {
// check startmode
if (Setting.getSystemPreferences().getInt("startmode", 0) == 0) {
YAamsCore.startmode = 0;
Setting.getSystemPreferences().putInt("startmode", 1);
Setting.saveSystemPreferences();
} else {
YAamsCore.startmode = 1;
WizardManagement.addPage(new WizardErrorPage());
}
// basics
T.init();
com.jidesoft.utils.Lm.verifyLicense("Steffen Trutz", "YAams", "90DijknROE1VxT0qJcWahMoqa5knNr2");
mess = new YMessagesDialog(T.r("start.error", YAamsCore.TITLE), "yaams.start");
IconCache.init(mess);
YAamsCore.init(mess);
// set wizard
WizardManagement.start(new AE() {
@Override
public void run() {
Setting.saveSystemPreferences();
Start.this.run(mess);
}
});
}
public void run(YMessagesDialog mess) {
// has java6?
if (!SystemUtils.IS_JAVA_1_6) {
mess.add(T.r("start.java", SystemUtils.JAVA_VERSION), Level.ERROR_INT);
}
final YWindowStart y = new YWindowStart();
// add log
final AppenderSkeleton aps = addLog(y);
// load rest
I18N.init();
T.addOptions();
YaFrame.init();
YaFrame.registerTab(new BasicTabEvent());
YaFrame.registerTab(new ProjectTabEvent());
ProjectManagement.start();
FavoritManagement.init();
// error test
// YEx.error("title", new Throwable("test2"));
// add plugins
PluginPlugin.start(mess);
// Get the current screen size & check it
Dimension scrnsize = Toolkit.getDefaultToolkit().getScreenSize();
if (scrnsize.getWidth() < 1024 || scrnsize.getHeight() < 768) {
mess.add(T.r("start.window", YAamsCore.NAME, scrnsize.getWidth(), scrnsize.getHeight()), Level.INFO_INT);
}
Log.ger.info("Calc for Screen: " + scrnsize.getWidth() + "x" + scrnsize.getHeight());
// check ram
if (Runtime.getRuntime().maxMemory() < 1024 * 1024 * 242) {
mess.add(T.r("start.memory", YAamsCore.NAME, Runtime.getRuntime().maxMemory() / (1024 * 1024)), Level.INFO_INT);
}
// check Beta
if (YAamsCore.BETA) {
mess.add(T.r("start.beta"), Level.WARN_INT);
}
if (mess.getLevel() == Level.INFO_INT) {
// exist system?
if (mess.setTitle(T.r("start.welcome", YAamsCore.NAME)).showOk()) {
YaFrame.get().start();
}
} else {
// exist system?
if (mess.setFooter(T.r("dialog.ignore")).showQuestion()) {
YaFrame.get().start();
}
}
// remove log & savemode
Log.ger.removeAppender(aps);
Setting.getSystemPreferences().putInt("startmode", 0);
Setting.saveSystemPreferences();
y.close();
}
/**
* Helpermethod to show the message
*
* @param y
* @return
*/
protected AppenderSkeleton addLog(final YWindowStart y) {
AppenderSkeleton a = new AppenderSkeleton() {
@Override
public boolean requiresLayout() {
return false;
}
@Override
public void close() {
}
@Override
protected void append(LoggingEvent le) {
try {
y.setNote(le.getMessage().toString());
} catch (Throwable t) {
}
}
};
Log.ger.addAppender(a);
return a;
}
}